package com.zkthink.ceres.pay.wechat.v3.service.ecommerce;

import com.zkthink.ceres.pay.wechat.v3.entity.request.refunds.QueryRefundsRequest;
import com.zkthink.ceres.pay.wechat.v3.entity.request.refunds.RefundsApplyRequest;
import com.zkthink.ceres.pay.wechat.v3.entity.request.subsidies.CreateSubsidiesRequest;
import com.zkthink.ceres.pay.wechat.v3.entity.result.refunds.QueryRefundsResult;
import com.zkthink.ceres.pay.wechat.v3.entity.result.refunds.RefundsApplyResult;
import com.zkthink.ceres.pay.wechat.v3.entity.result.subsidies.CreateSubsidiesResult;

/**
 * <p>
 * 退款申请
 * 当交易发生之后一段时间内，由于买家或者卖家的原因需要退款时，
 * 卖家可以通过退款接口将支付款退还给买家，微信支付将在收到退款请求并且验证成功之后，按照退款规则将支付款按原路退到买家帐号上。
 * </p>
 *
 * @author vivi.huang
 * @since 2020/6/16
 */
public interface RefundsService {

    /**
     * 退款申请API
     * 当交易发生之后一段时间内，由于买家或者卖家的原因需要退款时，卖家可以通过退款接口将支付款退还给买家，微信支付将在收到退款请求并且验证成功之后，按照退款规则将支付款按原路退到买家帐号上。
     * @param refundsApplyRequest
     * @return
     */
    RefundsApplyResult refundsApply(RefundsApplyRequest refundsApplyRequest);

    /**
     * 查询退款API
     * 提交退款申请后，通过调用该接口查询退款状态。该查询服务提供两种查询方式（两种查询方式返回结果一致）：
     *       方式1：通过微信支付退款单号查询退款；
     *       方式2：通过商户退款单号查询退款。
     * @param queryRefundsRequest
     * @return
     */
    QueryRefundsResult queryRefunds(QueryRefundsRequest queryRefundsRequest);



}